/***
 * 用于登录信息表单验证
 * ***/

/**
 * 点击“登录”按钮，切换至密码登录显示界面，或者登录账号
 */
    $('.btn_pwdlogin').on('click',function () {
     //   console.log(loginMode+ "当前点击的时登录按钮");//输出登录模式
        if(loginMode){
            //切换至密码登录显示界面
            $('.btn_pwdlogin').css({"background-color":"rgb(75,139,210,1)"});
            $('.btn_msglogin').css({"background-color":"rgb(127,186,44,1)"});
            $('#pwdLogin').show();
            $('#msgLogin').hide();
            loginMode = false;//fasle : 密码登录 ；   true: 短信登录
        }else
            goToLoginPassword();
    });

    /**
     * 点击“短信登录”按钮，切换至短信登录显示界面，或者登录账号
     */
    $('.btn_msglogin').on('click',function () {
       // console.log(loginMode + "当前点击的时短信登录按钮");//输出登录模式
        if(!loginMode){
            //切换至短信登录显示界面
            $('.btn_pwdlogin').css({"background-color":"rgba(127,186,44,1)"});
            $('.btn_msglogin').css({"background-color":"rgba(75,139,210,1)"});
            $('#pwdLogin').hide();
            $('#msgLogin').show();
            loginMode = true;//fasle : 密码登录 ；   true: 短信登录
        }else
            goToLoginMsg();
    });
    /**
     * 短信登录模式登陆
     */
    function goToLoginMsg() {
        //输入相关信息，登录
        var flagName =  verifiNull($('#msgLogin input[name=username]'));
        var flagPassword =  verifiNull($('#msgLogin input[name=password]'));
        var flagMsgVcode =  verifiNull($('#msgLogin input[name=msgvcode]'));
     //   console.log( "输入状态：  " +flagName +"  "+flagPassword+"  "+flagMsgVcode);

        var userName = $('#msgLogin input[name=username]').val();
        var userPassword = $('#msgLogin input[name=password]').val();
        var userMsgvcode = $('#msgLogin input[name=msgvcode]').val();
     //   console.log( "输入：  " + userName +"  "+userPassword+"  "+userMsgvcode);


        //检查到相关输入非空后，执行向后台发送数据
        if(flagName && flagPassword && flagMsgVcode){
            $.ajax({
                url: "/loginSys?loginType=msg",
                data: 'username='+userName+'&password='+userPassword+'&msgvcode='+userMsgvcode,
                type: "POST",
                datatype:"json",
                success: function(data){
                  //  console.log(data);
                    if (data.url != 'no') {
                        layui.use(['layer', 'form'], function(){
                            layer.msg("登录成功...",{icon:1})
                        });
                    } else {
                        layui.use(['layer', 'form'], function(){
                            layer.msg("登录失败...",{icon:2})
                        });
                    }

                    setTimeout(function () {
                        if (data.state) {
                            $.Hidemsg();
                        }
                        if (data.url != 'no') {
                            location = data.url;
                        }
                    }, 1000);
                }
            });
        }
    }

    /**
     *  密码登录模式登陆
     */
    function goToLoginPassword() {
        //输入相关信息，登录
        var flagName =  verifiNull($('#pwdLogin input[name=username]'));
        var flagPassword =  verifiNull($('#pwdLogin input[name=password]'));
        var flagVcode =  verifiNull($('#pwdLogin input[name=vcode]'));
     //   console.log( "输入状态：  " +flagName +"  "+flagPassword+"  "+flagVcode);

        var userName = $('#pwdLogin input[name=username]').val();
        var userPassword = $('#pwdLogin input[name=password]').val();
        var userVcode = $('#pwdLogin input[name=vcode]').val();
       // console.log( "输入：  " + userName +"  "+userPassword+"  "+userVcode);

        //检查到相关输入非空后，执行向后台发送数据
        if(flagName && flagPassword && flagVcode){
            $.ajax({
                url: "/loginSys?loginType=pwd",
                data: 'username='+userName+'&password='+userPassword+'&vcode='+userVcode,
                type: "POST",
                datatype:"json",
                success: function(data){
                 //   console.log(data);
                    if (data.url != 'no') {
                        layui.use(['layer', 'form'], function(){
                            layer.msg("登录成功...",{icon:1})
                        });
                    } else {
                        layui.use(['layer', 'form'], function(){
                            layer.msg("登录失败...",{icon:2})
                        });
                    }

                    setTimeout(function () {
                        /* if (data.state) {
                             $.Hidemsg();
                         }*/
                        if (data.url != 'no') {
                            location = data.url;
                        }
                    }, 1000);
                }
            });
        }
    }

/**
 *
 * 以下是表单验证的方法：
 * 表单验证方法 第 1 种 ：验证长度
 * @param len1
 * @param len2
 * @returns {boolean}
 */
function verifiLength(obj,len)
{
    if(obj.val().length > len) {
        layui.use(['layer', 'form'], function(){
            layer.alert("不能超过"+len+"个字符！", {icon: 2});
        });
       // valIn.focus();
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 2 种 ：是否是中文
 * @param obj
 * @returns {boolean}
 */
function verifiIsChinese(obj){
    var reg=/^[\u0391-\uFFE5]+$/;
    if(obj.val() != ""&&!reg.test(obj.val())){
        layui.use(['layer', 'form'], function(){
            layer.alert("必须输入中文！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 3 种 ：是否是英文
 * @param obj
 * @returns {boolean}
 */
function verifiIsEnglish(obj){
    var zmReg=/^[a-zA-Z]*$/;
    if(obj.val() != ""&&!zmReg.test(obj.val())){
        layui.use(['layer', 'form'], function(){
            layer.alert("只能是英文字母！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 4 种 ：是否是数字
 * @param obj
 * @returns {boolean}
 */
function verifiIsNumber(obj){
    var reg = /^[0-9]+$/;
    if(obj.val() != ""&&!reg.test(obj.val())){
        layui.use(['layer', 'form'], function(){
            layer.alert("只能输入数字！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 5 种 ：是否是英文或数字
 * @param obj
 * @returns {boolean}
 */
function verifiIsEnOrNum(obj){
    var zmnumReg=/^[0-9a-zA-Z]*$/;
    if(obj.val() != ""&&!zmnumReg.test(obj.val())){
        layui.use(['layer', 'form'], function(){
            layer.alert("只能输入是字母或者数字,请重新输入！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 6 种 ：检验时间大小(与当前时间比较)
 * @param obj
 * @returns {boolean}
 */
function verifiDate(obj){
    var obj_value=obj.val().replace(/-/g,"/");//替换字符，变成标准格式(检验格式为：'2019-04-10')
//var obj_value=obj.replace("-","/");//替换字符，变成标准格式(检验格式为：'2013-08-10 15:12')
    var date1=new Date(Date.parse(obj_value));
    var date2=new Date();//取今天的日期
    if(date1>date2){
        layui.use(['layer', 'form'], function(){
            layer.alert("不能大于当前时间！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 7 种 ：屏蔽关键字
 * @param obj
 * @param strA
 * @param strB
 * @returns {boolean}
 */
function verifiKeyWord(obj,strA,strB) {
    if((obj.val().indexOf (strA) == 0) || (obj.val().indexOf (strB) == 0)){
        layui.use(['layer', 'form'], function(){
            layer.alert("屏蔽关键字(这里屏蔽 "+strA+" 和 "+strB+")！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 8 种 ： 检查两次输入密码是否相同
 * @param obj1
 * @param obj2
 * @returns {boolean}
 */
function verifiPassword(obj1,obj2){
    if(obj1.value!=obj2.value){
        layui.use(['layer', 'form'], function(){
            layer.alert("密码不一致！", {icon: 2});
        });
        obj1.value = "";
        obj2.value = "";
        return false;
    }else
        return true;

   /* with(document.all){
        if(input1.value!=input2.value){
            alert("密码不一致")
            input1.value = "";
            input2.value = "";
        }
        else {
            alert("密码一致");
            document.forms[0].submit();
        }
    }*/
}

/**
 * 表单验证方法 第 9 种 ： 检查输入不能为空
 * @param obj
 * @returns {boolean}
 */
function verifiNull(obj) {
    if (obj.val().length == 0) {
        layui.use(['layer', 'form'], function(){
            layer.alert("输入不能为空！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 10 种 ： 检查邮箱地址
 * @param obj
 * @returns {boolean}
 */
function verifiEmailInput(obj){
    var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
    if(!myreg.test(obj.val())){
        layui.use(['layer', 'form'], function(){
            layer.alert("请输入有效的邮箱！", {icon: 2});
        });
        return false;
    }else
        return true;
}

/**
 * 表单验证方法 第 11 种 ： 检查手机号码
 * @param mobile
 * @returns {boolean}
 */
function verifiMobile(mobile){
    if(mobile.val().length==0){
        layui.use(['layer', 'form'], function(){
            layer.alert("手机号码不能为空！", {icon: 2});
        });
        return false;
    }
    if(mobile.val().length!=11){
        layui.use(['layer', 'form'], function(){
            layer.alert("请输入有效的手机号码，需是11位！", {icon: 2});
        });
        return false;
    }
    var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
    if(!myreg.test(mobile.val())) {
        layui.use(['layer', 'form'], function(){
            layer.alert("请输入有效的手机号码！", {icon: 2});
        });
        return false;
    }
}

/**
 * 表单验证方法 第 12 种 ： 检查身份证号码
 * @param idCard
 */
function verifiIDCard(idCard){
    var checkFlag = new clsIDCard(idCard.val());
    if (!checkFlag.IsValid()) {
        layui.use(['layer', 'form'], function(){
            layer.alert("输入的身份证号无效,请输入真实的身份证号！", {icon: 2});
        });
        return false;
    }else
        return true;
}

function clsIDCard(CardNo) {
    this.Valid=false;
    this.ID15='';
    this.ID18='';
    this.Local='';
    if(CardNo!=null)this.SetCardNo(CardNo);
}

// 设置×××号码，15位或者18位
clsIDCard.prototype.SetCardNo = function(CardNo) {
    this.ID15='';
    this.ID18='';
    this.Local='';
    CardNo=CardNo.replace(" ","");
    var strCardNo;
    if(CardNo.length==18) {
        pattern= /^\d{17}(\d|x|X)$/;
        if (pattern.exec(CardNo)==null)return;
        strCardNo=CardNo.toUpperCase();
    } else {
        pattern= /^\d{15}$/;
        if (pattern.exec(CardNo)==null)return;
        strCardNo=CardNo.substr(0,6)+'19'+CardNo.substr(6,9)
        strCardNo+=this.GetVCode(strCardNo);
    }
    this.Valid=this.CheckValid(strCardNo);
}

// 校验×××有效性
clsIDCard.prototype.IsValid = function() {
    return this.Valid;
}

// 返回生日字符串，格式如下，1981-10-10
clsIDCard.prototype.GetBirthDate = function() {
    var BirthDate='';
    if(this.Valid)BirthDate=this.GetBirthYear()+'-'+this.GetBirthMonth()+'-'+this.GetBirthDay();
    return BirthDate;
}

// 返回生日中的年，格式如下，1981
clsIDCard.prototype.GetBirthYear = function() {
    var BirthYear='';
    if(this.Valid)BirthYear=this.ID18.substr(6,4);
    return BirthYear;
}

// 返回生日中的月，格式如下，10
clsIDCard.prototype.GetBirthMonth = function() {
    var BirthMonth='';
    if(this.Valid)BirthMonth=this.ID18.substr(10,2);
    if(BirthMonth.charAt(0)=='0')BirthMonth=BirthMonth.charAt(1);
    return BirthMonth;
}

// 返回生日中的日，格式如下，10
clsIDCard.prototype.GetBirthDay = function() {
    var BirthDay='';
    if(this.Valid)BirthDay=this.ID18.substr(12,2);
    return BirthDay;
}

// 返回性别，1：男，0：女
clsIDCard.prototype.GetSex = function() {
    var Sex='';
    if(this.Valid)Sex=this.ID18.charAt(16)%2;
    return Sex;
}

// 返回15位×××号码
clsIDCard.prototype.Get15 = function() {
    var ID15='';
    if(this.Valid)ID15=this.ID15;
    return ID15;
}

// 返回18位×××号码
clsIDCard.prototype.Get18 = function() {
    var ID18='';
    if(this.Valid)ID18=this.ID18;
    return ID18;
}

// 返回所在省，例如：上海市、浙江省
clsIDCard.prototype.GetLocal = function() {
    var Local='';
    if(this.Valid)Local=this.Local;
    return Local;
}

clsIDCard.prototype.GetVCode = function(CardNo17) {
    var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');
    var cardNoSum = 0;
    for (var i=0; i<CardNo17.length; i++)cardNoSum+=CardNo17.charAt(i)*Wi[i];
    var seq = cardNoSum%11;
    return Ai[seq];
}

clsIDCard.prototype.CheckValid = function(CardNo18) {
    if(this.GetVCode(CardNo18.substr(0,17))!=CardNo18.charAt(17))return false;
    if(!this.IsDate(CardNo18.substr(6,8)))return false;
    var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
    if(aCity[parseInt(CardNo18.substr(0,2))]==null)return false;
    this.ID18=CardNo18;
    this.ID15=CardNo18.substr(0,6)+CardNo18.substr(8,9);
    this.Local=aCity[parseInt(CardNo18.substr(0,2))];
    return true;
}

clsIDCard.prototype.IsDate = function(strDate) {
    var r = strDate.match(/^(\d{1,4})(\d{1,2})(\d{1,2})$/);
    if(r==null)return false;
    var d= new Date(r[1], r[2]-1, r[3]);
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[2]&&d.getDate()==r[3]);
}
